/**
 * 路径配置
 */
var urlConfig = {
	getUserList : baseUrl + "userConfig/getUserList",// 获取用户信息
	getUserTypeList : baseUrl + "userConfig/getUserTypeList",// 获取用户类型
	getUserRole : baseUrl + "role/getRoleList",// 获取用户类型
	saveUser : baseUrl + "userConfig/saveUser", // 添加用户
	updateUser : baseUrl + "userConfig/updateUser",// 更新用户
	isRepeat : baseUrl + "userConfig/isRepeat",// 判断用户名是否已存在
	deleteUser : baseUrl + "userConfig/deleteUser",//删除用户
	getUserById : baseUrl + "userConfig/getUserById"// 根据Id获取用户信息(修改时回显)
}
var table_row_num = 10;// 表格显示行数
/**
 * 表格渲染
 */
$(document).ready(function() {
	initOptionsCatalog();
	$("#userCatalog").on("change", function() {
		createTable();
	});
})
function initOptionsCatalog() {
	var $userCatalog = $("#userCatalog");// 初始化用户分类下拉
	$userCatalog.empty();
	$userCatalog.append("<option value='-1'>全部</option>");
	var callback = function(data) {
		if (data && data.data) {
			var list = data.data;
			for (var i = 0; i < list.length; i++) {
				var item = list[i];
				$userCatalog.append("<option value='" + item.userTypeId + "'>"
						+ item.typeName + "</option>");
			}
			//createTable();
		}
		$userCatalog.attr("state", 1);
		
	}
	var config = {
		url : urlConfig.getUserTypeList,
		data : {},
		callback : callback
	};
	jqAjax(config);
}
// 创建主要表格
function createTable() {
	var userTypeId = $("#userCatalog").val();
	$.ajax({
		url : urlConfig.getUserList,
		type : 'post',
		data : {
			userTypeId : userTypeId
		},
		async : true, // 默认为true 异步 \
		dataType : "json",
		error : function() {
			console.info('error');
		},
		success : function(data) {

			var tableData = data.data;
			for (var i = 0; i < tableData.length; i++) {
				tableData[i].rowNum = i + 1;
			}
			showTable(tableData);
		}
	})
}

function showTable(tableData) {
	maintable = $('#am_tab').DataTable({
		destroy : true,
		// paging: false, //禁用分页
		ordering : false,
		bAutoWidth : false,
		info : false,// 禁用显示条目
		searching : false,
		filter : false,// 搜索框禁用
		lengthChange : false, // 显示条目禁用
		displayLength : table_row_num, // 显示条目
		"data" : tableData,
		// 激活功能下拉列表
		fnDrawCallback : function() {
			$('.am-dropdown').dropdown({
				justify : '#doc-dropdown-justify-js'
			});
			$(".butBgColor").css("font-size", "0.4 em");
		},
		columns : [ {
			"data" : "rowNum",
			width : "5"
		}, {
			data : "userName",
			sClass : "am-text-center"
		}, {
			data : "typeName",
			sClass : "am-text-center"
		}, /*
		 * { data : null, sClass : "text_center" },
		 */{
			data : "statusShow",
			sClass : "am-text-center"
		}, {
			"orderable" : false,
			"data" : null,
			"defaultContent" : '',
			sClass : "am-text-center"
		} ],
		"columnDefs" : [{// 功能下拉列表
			targets : 4,
			"render" : function(data, type, full, meta) {

				var userTypeId = full.userTypeId;// 数据库查询的UserTypeId
				var loginUserTypeId = $("#loginTypeId").val();// session的userTypeId
				var userId = full.userId;// 数据库获取的userid
				var loginUserId = $("#loginUserId").val();// session中的userid
				if (userId == loginUserId) {// ||loginUserTypeId==2//如果session中的loginuserid
					// 等于数据库取到的userid
					// 或者loginuserType和usertype==2
					// 取消删除功能

					return '<div class="am-btn-toolbar">'
							+ ' <div class="am-btn-group am-btn-group-xs">'
							+ '  <button id="'
							+ full.userId
							+ '" onclick="showModal(this)" class="am-btn am-btn-default am-btn-xs am-text-secondary"><span class="am-icon-pencil-square-o"></span> 修改</button>'
							+ ' </div>' + ' </div>';
				}else{

					return '<div class="am-text-center">'
							+ ' <div class="am-btn-group am-btn-group-xs">'
							+ '  <button id="'
							+ full.userId
							+ '" onclick="showModal(this)" class="am-btn am-btn-default am-btn-xs am-text-secondary"><span class="am-icon-pencil-square-o"></span> 修改</button>'

							+ ' <button id="'
							+ full.userId
							+ '" onclick="showConfirm(this)" class="am-btn am-btn-default am-btn-xs am-text-danger am-hide-sm-only"><span class="am-icon-trash-o"></span> 删除</button>'
							+ ' </div>' + ' </div>';
				}
			}

		}]
	});
}
/**
 * 查看详情
 */
function getUserNames(names) {
	var id = names.split("&&")[0];
	var value = names.split("&&")[1];
	warning(id, value);
}
/**
 * 添加或修改的模态窗口 type=1 添加 type=2 修改
 */
function showModal(t) {
	initOptions();
	var $modal = $("#am_modal");
	var $title = $("#am_modal_title");
	if (t != undefined) {
		$title.text("修改");
		$modal.attr("type", 2);
		var id = $(t).attr("id");
		$("#option_password").show();// 按鈕xianshi
		$("#hidden_password_div").hide();// 密码输入框 隐藏
		$("#userId").val(id);
		$("#isSearch").val("0");
		$("#option_password").show();// 按鈕xianshi
		$("#hidden_password_div").hide();// 密码输入框 隐藏
		var data = {
			userId : id
		};
		var callback = function back(data) {
			$("#userName").val(data['userName']);
			$("#worn_Password").val(data['password']);
			// $("#password").val(data['password']);
			$("#userId").val(data['userId']);
			var status = data['status'];// 用户状态
			if (status == 1) {
				$("#canUse").attr("checked", true);// 可用
			} else {
				$("#noUse").attr("checked", true);// 不可用
			}
			// 修改下拉列表回填
			$("#userTypeId option[value='" + data['userTypeId'] + "']").attr("selected", "selected");
			initUserRole(data.roleIds);
		}
		var config = {
			url : urlConfig.getUserById,
			data : data,
			callback : callback
		};
		jqAjax(config);
	} else {
		$title.text("添加");
		$modal.attr("type", 1);
		initUserRole();
		var divH = document.getElementById("hidden_password_div");
		$("#isSearch").val('1');// 查询按钮状态1打开状态
		divH.style.display = "block";
		var divH = document.getElementById("option_password");
		divH.style.display = "none";
		$("#userName").val("");
		$("#password").val("");
		$("#userTypeId").val("");
		$("#canUse").attr("checked", "checked");// 添加时默认可用状态被选中
	}
	$modal.modal();
}

// 点击取消
function myCloseModal(id) {

	var $modal = $(id);
	$modal.modal('close');
}
/**
 * 删除信息
 */
function showConfirm(t) {

	var $modal = $("#am_confirm");
	var id = $(t).attr("id");
	$("#userId").val(id);
	$modal.modal({
		relatedTarget : this,
		onConfirm : function(options) {
			var id = $("#userId").val();
			var data = {
				userId : id
			};
			var config = {
				url : urlConfig.deleteUser,
				data : data,
				callback : callbackFun
			};
			jqAjax(config);
		},
		onCancel : function() {
		}
	});
}
/**
 * 初始化添加角色下拉
 * @param roleIds
 * @returns
 */
function initUserRole(roleIds) {
	$('#userRole').chosen();
	$(".chosen-container").width(340);// 必须设置下拉宽度‘amazeui模态有冲突’
	var $userRole = $("#userRole");
	$userRole.empty();
	// $addRole.append("<option value='-1'>全部</option>");
	var callback = function(data) {
		if (data && data.data) {
			var list = data.data;
			for (var i = 0; i < list.length; i++) {
				var item = list[i];
				if (roleIds != undefined && roleIds != "") {
					var arr = new Array();
					arr = roleIds.split(",");
					var isHave = arr.indexOf("" + item.roleId);
					if (isHave >= 0) {
						$userRole.append("<option value='" + item.roleId + "'selected>" + item.roleName + "</option>");
					} else {
						$userRole.append("<option value='" + item.roleId + "'>" + item.roleName + "</option>");
					}

				} else {
					$userRole.append("<option value='" + item.roleId + "'>" + item.roleName + "</option>");
				}
			}
			$userRole.trigger('chosen:updated');// 触发 select 的 `chosen:updated`事件 
		}
		$userRole.attr("state", 1);

	}
	var config = {
		url : urlConfig.getUserRole,
		data : {},
		callback : callback
	};
	jqAjax(config);

}
/**
 * 初始化下拉列表
 */
function initOptions() {
	var $userTypeId = $("#userTypeId");// 初始化添加修改 下拉
	var callback = function(data) {
		if (data && data.data) {
			var list = data.data;
			$userTypeId.empty();// 清空下拉列表
			for (var i = 0; i < list.length; i++) {
				var item = list[i];
				//填充下拉类型
				$userTypeId.append("<option value='" + item.userTypeId + "'>" + item.typeName + "</option>");
			}
		}
		$userTypeId.attr("state", 1);
	}
	var config = {
		url : urlConfig.getUserTypeList,
		data : {},
		callback : callback
	};
	jqAjax(config);
}

/**
 * 提交表单
 */
function commitModal() {
	var $modal = $("#am_modal");
	var validator = validatorUser();//单独定制
	if ($modal.attr("type") == 1) {
		var userName = $("#userName").val();
		var userData = {
			userName : userName
		};
		var callback1 = function back(data) {
			console.info(data);
			if (data == '0') {// 用户名可以用
				if ($("#password").val() != '') {
					$("#password").val(MD5($("#password").val()));// 加密码MD5
				} else if ($("#isSearch").val() != '1') {
					var divH = document.getElementById("hidden_password_div");
					$("#isSearch").val('1');// 查询按钮状态1打开状态
					divH.style.display = "block";
					var divH = document.getElementById("option_password");
					divH.style.display = "none";
					warning("hidden_password_div", "密码不能为空！");
					return false;
				}
				var data = getFormDataUser("#am_form");
				console.info(data);
				$("#password").val(""); // 清空password
				var config = {
					url : urlConfig.saveUser,
					data : data,
					callback : callbackFun
				};
				if (validator) {
					jqAjax(config);
				}
			} else {
				warning("userName", "用户名已存在,不能提交！")
			}
		}
		var configUser = {
			url : urlConfig.isRepeat,
			data : userData,
			callback : callback1
		};
		if (validator) {
			jqAjax(configUser);
		}
	}
	if ($modal.attr("type") == 2) {
		if ($("#isSearch").val() == 0) {// 如果按钮关闭状态 
			$("#password").val($("#worn_Password").val());
		} else {
			if ($("#password").val() != '') {

				$("#password").val(MD5($("#password").val()));// 加密码MD5
			} else {
				warning("hidden_password_div", "密码不能为空！");
				return false;
			}
		}
		var data = getFormDataUser("#am_form");
		var validator = validatorUser();
		document.getElementById("password").value = "";
		var config = {
			url : urlConfig.updateUser,
			data : data,
			callback : callbackFun
		};
		if (validator) {
			jqAjax(config);
		}
	}
}
// 获取表单数据
function getFormDataUser(id) {
	var inputs = $(id).find("input,select");
	var data = {};
	for (var i = 0; i < inputs.length; i++) {
		var input = $(inputs[i]);
		var type = input.attr("type");
		if (type == 'hidden' || type == 'text' || type == 'password'
				|| type == 'select') {
			var value = input.val();
			if (value instanceof Array) {
				value = value.join(",");
			}
			data[input.attr("id")] = value;
		} else if (type == 'radio') {
			var value = $("input[name='" + input.attr("name") + "']:checked")
					.val();
			data[input.attr("name")] = value;
		}
	}
	return data;
}
// 密码div隐藏
function hidden_password() {
	var divH = document.getElementById("hidden_password_div");
	$("#isSearch").val('1');// 查询按钮状态1打开状态
	divH.style.display = "block";
	var divH = document.getElementById("option_password");
	divH.style.display = "none";
}

function callbackFun(data) {
	createTable();
	showAlertMsg(data.msg, "am_modal");
}

function validatorUser() {
	var userName = $("#userName").val();
	var password = $("#password").val();
	var userRole = $("#userRole").val();
	//密码验证正则
	var regex = /(?![0-9]+$)(?![a-zA-Z]+$)(?!([^(0-9a-zA-Z)]|[\(\)])+$)([^(0-9a-zA-Z)]|[\(\)]|[a-zA-Z]|[0-9]){6,}$/;
	if(userName.trim()==''||userName==null){
		warning('userName', "用户名不能为空");
		return false;
	}
	if(password.trim()==''||password==null){
		warning('password', "密码不能为空");
		return false;
	}
	if(userRole==null){
		warning('userRole_lable', "用户角色不能为空");
		return false;
	}
	if (!regex.test(password)) {
		if(password.trim().length<6){
			warning('password', "密码长度不能小于6个字符");
		}else{
			warning('password', "密码必须同时包含数字和字母");
		}
		return false;
	}
	return true;
}